Embodiments of the present invention relate generally to methods and systems for providing summarizations of data and transactions related to one or more applications and more particularly to providing summarizations of data and transactions including recovery of failed summarization instances.
A common business need is to summarize data that exists in a system. This can be accomplished using a summarization program. A summarization program can involve any number of functional data transformations that bring data from an existing state in a system to a state that is ready or closer to being ready to be viewed by an end user, (e.g., in a report). A report may be any entity that displays summarized data to an end user, for example in a performance reporting dashboard of a user interface. In bringing summary data into such a dashboard, any number of users can be running the summarization program at any given time. Besides the architecture for efficiently dealing with and processing all those requests, there are additional problems to be solved when things do not go as expected. Dealing with source system data corruption issues, environment issues up to and including plug-pulls, and even some code bugs, can lead to very complex scenarios from which the summarization program must seamlessly recover.
For example, the problem remains of how to sort out the existing state when any number of failed summarization instances can exist, and any number of users can concurrently be attempting to clean up those failed summarization instances, as well as any number of users concurrently running summarization normally (not attempting to recover from previous failure). The problem is further complicated when considerations such as security and system resource limitations are introduced (e.g. there may be practical or imposed limits on the total number of failed or concurrently running summarization instances that can exist at any one time). The parameters passed to an instance of summarization can determine some number of elements that make up the scope of the summarization instance. Depending on how users choose to pass parameters to summarization instances, and whether imposed data security allows access to some or all of the elements defined by the parameters, then summarization instances can have scope that overlaps with the scope of other summarization instances.
In previous solutions to these problems, if a failed or running instance of summarization exists on a given scope, then any new attempted instance that overlaps with the scope of the existing instance may not be allowed to run and may be forced to raise an error. However it can be a very frustrating user experience to try to predict when it is safe to run summarization. Also in previous solutions, when failures occur, summarization instances can be left to be cleaned up by some external method or user influence. However again, the user can become frustrated when special actions are needed to clean up failed summarization instances. If the scope of summarization that a user has submitted overlaps with the scope of a running summarization instance, then the newly submitted instance can wait forever or can timeout and fail. However, there are several related scenarios in which useful data can still be summarized for the user but previous solutions do not address these scenarios. Hence, there is a need for improved methods and systems for providing summarizations of data and transactions related to an application such as a project management application.